#ifndef INTERRUPTSERVICEROUTINE_H
#define INTERRUPTSERVICEROUTINE_H

typedef struct registers
{
  u32int ds;
  u32int edi, esi, ebp, esp, ebx, edx, ecx, eax;
  u32int int_no, err_code;
  u32int eip, cs, eflags, useresp, ss;
} Registers;

/**
  These are the set of registers that appear when an interrupt is recieved
  in kernel mode. The useresp and ss values are missing.
**/

/**
	@author James Molloy <james@jamesmolloy.co.uk>
*/
class InterruptServiceRoutine
{
public:
  InterruptServiceRoutine();

  ~InterruptServiceRoutine();

  virtual void run(Registers *r);

};

#endif
